//package com.company;
//
//import java.io.File;
//import java.lang.reflect.Field;
//
///*
//通过反射操作对象的属性
// */
//public class ActioField {
//    public static void main(String[] args) throws Exception {
//        // 第一步：获取类的class对象
//        Class cls = Class.forName("com.company.Person");
//
//        // 第二步：通过class对象 获取 类的属性
//        Field personFieldName = cls.getField("name1");
//        // 需要提供 一个该类的实例
//        Person p = new Person();
//        p.name1 = "50";
//        // 第三步：通过类的属性进行 get set操作
//        //  属性对象.get(实例对象)
//        Object PersonFieldNameValue = personFieldName.get(p);
//        System.out.println(PersonFieldNameValue);  // 50
//
//
//        // 通过反射给 成员变量 设置值，需要重新 get
//        // 属性对象.set(第一个参数是某个实例对象，第二个参数是想要设置的值)
//        personFieldName.set(p,"20");
//        System.out.println(personFieldName.get(p));  // "20"
//
//        // 通过 class 对象 获取 name4 这个变量对象, name4 这个变量属性的权限是 private，给它直接设置值会报异常 IllegalAccessException
//
//        Field name4 = cls.getDeclaredField("name4");
//        // 忽略访问权限修饰符的检查
//        name4.setAccessible(true);  // 如果 没有这句忽略访问权限修饰符的安全检查，那么会报异常
//        name4.set(p,"张三");
//        System.out.println(name4.get(p));
//    }
//}
